package br.senai.mb;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import br.senai.entidade.Produto;
import br.senai.modelo.ProdutoDAO;
import br.senai.modelo.impl.ProdutoDAOImpl;

@ManagedBean(name = "produtoMB")
@ViewScoped
public class ProdutoMB extends ManagedBeanBase implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private Produto produto;
	private List<Produto> produtos;
	
	public ProdutoMB() {
		listar();
	}

	private void listar() {
		ProdutoDAO produtoDAO = (ProdutoDAO) createPersistence(ProdutoDAOImpl.class);
		produtos = produtoDAO.getLista();
	}

	public void salvar(ActionEvent event) {
		
		if (validarDados()) {
			ProdutoDAO produtoDAO = (ProdutoDAO) createPersistence(ProdutoDAOImpl.class);
			produtoDAO.salvar(produto);
			listar();
			execute("modalForm.hide();");
		}
	}

	private boolean validarDados() {

		if (produto.getNome() == null || produto.getNome().isEmpty()) {
			addErrorMessage("", "Preencha o campo Nome");
			return false;
		} 
		
		return true;
	}

	public void excluir(ActionEvent event) {
		ProdutoDAO produtoDAO = (ProdutoDAO) createPersistence(ProdutoDAOImpl.class);
		produtoDAO.remover(Produto.class, produto.getId());
	}
	
	public void novoProduto(ActionEvent event) {
		produto = new Produto();
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}
	
}
